// src/api/user.ts

import request from './request';
import type {
  PageParams,
  PaginatedResponse,
  UserCreateRequest,
  UserDetail,
  UserUpdateRequest,
} from '@/types/api/user';

/**
 * @description 分页查询用户列表
 * @param {PageParams} params 分页及搜索参数
 * @returns {Promise<PaginatedResponse<UserDetail>>} 用户分页数据
 */
export function listUsersApi(params: PageParams): Promise<PaginatedResponse<UserDetail>> {
  // 将前端的分页参数映射为后端 Page<T> 接受的参数
  const queryParams = {
    current: params.current,
    size: params.pageSize, // 后端 Mybatis-Plus Page 对象接收 'size'
    username: params.username,
  };
  return request.get('/users', {params: queryParams});
}

/**
 * @description 创建新用户
 * @param {UserCreateRequest} data 用户信息
 * @returns {Promise<UserDetail>} 新创建的用户
 */
export function createUserApi(data: UserCreateRequest): Promise<UserDetail> {
  return request.post('/users', data);
}

/**
 * @description 更新用户信息
 * @param {number} id 用户ID
 * @param {UserUpdateRequest} data 用户信息
 * @returns {Promise<UserDetail>} 更新后的用户
 */
export function updateUserApi(id: number, data: UserUpdateRequest): Promise<UserDetail> {
  return request.put(`/users/${id}`, data);
}

/**
 * @description (逻辑)删除用户
 * @param {number} id 用户ID
 * @returns {Promise<void>}
 */
export function deleteUserApi(id: number): Promise<void> {
  return request.delete(`/users/${id}`);
}
